package com.zhu.instructions.math;

import com.zhu.instructions.base.NoOperandsInstruction;
import com.zhu.rtda.Frame;
import com.zhu.rtda.OperandStack;

/**
 * 指令：ineg
 *
 * 操作数：无
 *
 * 功能：
 *  将栈顶的 int 值取负：-value
 *
 * 栈变化：
 *      ..., value(int) → ..., result(int)
 *
 * 示例：
 *  ineg → -5 变为 5
 *
 * 实现：
 *  使用一元 - 操作符对 int 值取负
 */
public class INEG extends NoOperandsInstruction {
    @Override
    public void execute(Frame frame) {
        OperandStack stack = frame.getOperandStack();
        int val = stack.popInt();
        stack.pushInt(-val);
    }
}
